package com.axxc.jpa.pattendegign.commons;

import java.util.HashMap;

import com.axxc.jpa.pattendegign.bridgepatten.CoolGift;
import com.axxc.jpa.pattendegign.bridgepatten.EnthusiasmGift;
import com.axxc.jpa.pattendegign.bridgepatten.Flower;
import com.axxc.jpa.pattendegign.bridgepatten.Gift;
import com.axxc.jpa.pattendegign.bridgepatten.Ring;

/**
 * @ClassName TestBridgePatten
 * @Description
 *              <p>
 *              结构型
 *              <p>
 *              1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性，避免在两个层次之间建立静态的继承联系，
 *              通过桥接模式可以使它们在抽象层建立一个关联关系。
 *              <p>
 *              2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统，桥接模式尤为适用。
 *              <p>
 *              3、一个类存在两个独立变化的维度，且这两个维度都需要进行扩展。****
 * @author xxc
 * @data 2018年9月8日下午10:14:14
 * @see {@link http://gitee.com/biuabiu/ }
 */
public class TestBridgePatten {

	public static void main(String[] args) {

		Gift ring = new Ring(new EnthusiasmGift(), "戒指");
		ring.show();

		Gift flower = new Flower(new CoolGift(), "玫瑰花");
		flower.show();

		HashMap<String, String> hashMap = new HashMap<String, String>() {
			private static final long serialVersionUID = 1L;
			{
				put("AAA", "AAA");
				put("BBB", "BBB");
				put("CCC", "CCC");
			}
		};
		hashMap.forEach((k, v) -> {
			System.out.println(v);
		});
	}
}
